Fix reorder_fixup, #59583
authorJonathan Blandford <jrb@redhat.com>
Fri, 2 Nov 2001 00:13:30 +0000 (00:13 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Fri, 2 Nov 2001 00:13:30 +0000 (00:13 +0000)
Thu Nov  1 19:11:35 2001  Jonathan Blandford  <jrb@redhat.com>

* gtk/gtkrbtree.c (gtk_rbtree_reorder_fixup): Fix reorder_fixup,
#59583

* gtk/gtktreeselection.c (gtk_tree_selection_set_mode): fix
warning.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkrbtree.c
gtk/gtktreeselection.c
gtk/gtktreeview.c

index 396e23403b611af9bb744096ae0a32809ffc8f78..3ca35f91bca948415794e65e9085638967b19104 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Thu Nov  1 19:11:35 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkrbtree.c (gtk_rbtree_reorder_fixup): Fix reorder_fixup,
+       #59583
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): fix
+       warning.
+
 Thu Nov  1 16:54:00 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktypeutils.h: Make GtkFunction return boolean, not gint.
index 396e23403b611af9bb744096ae0a32809ffc8f78..3ca35f91bca948415794e65e9085638967b19104 100644 (file)
@@ -1,3 +1,11 @@
+Thu Nov  1 19:11:35 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkrbtree.c (gtk_rbtree_reorder_fixup): Fix reorder_fixup,
+       #59583
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): fix
+       warning.
+
 Thu Nov  1 16:54:00 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktypeutils.h: Make GtkFunction return boolean, not gint.
index 396e23403b611af9bb744096ae0a32809ffc8f78..3ca35f91bca948415794e65e9085638967b19104 100644 (file)
@@ -1,3 +1,11 @@
+Thu Nov  1 19:11:35 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkrbtree.c (gtk_rbtree_reorder_fixup): Fix reorder_fixup,
+       #59583
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): fix
+       warning.
+
 Thu Nov  1 16:54:00 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktypeutils.h: Make GtkFunction return boolean, not gint.
index 396e23403b611af9bb744096ae0a32809ffc8f78..3ca35f91bca948415794e65e9085638967b19104 100644 (file)
@@ -1,3 +1,11 @@
+Thu Nov  1 19:11:35 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkrbtree.c (gtk_rbtree_reorder_fixup): Fix reorder_fixup,
+       #59583
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): fix
+       warning.
+
 Thu Nov  1 16:54:00 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktypeutils.h: Make GtkFunction return boolean, not gint.
index 396e23403b611af9bb744096ae0a32809ffc8f78..3ca35f91bca948415794e65e9085638967b19104 100644 (file)
@@ -1,3 +1,11 @@
+Thu Nov  1 19:11:35 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkrbtree.c (gtk_rbtree_reorder_fixup): Fix reorder_fixup,
+       #59583
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): fix
+       warning.
+
 Thu Nov  1 16:54:00 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktypeutils.h: Make GtkFunction return boolean, not gint.
index 396e23403b611af9bb744096ae0a32809ffc8f78..3ca35f91bca948415794e65e9085638967b19104 100644 (file)
@@ -1,3 +1,11 @@
+Thu Nov  1 19:11:35 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkrbtree.c (gtk_rbtree_reorder_fixup): Fix reorder_fixup,
+       #59583
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): fix
+       warning.
+
 Thu Nov  1 16:54:00 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktypeutils.h: Make GtkFunction return boolean, not gint.
index 396e23403b611af9bb744096ae0a32809ffc8f78..3ca35f91bca948415794e65e9085638967b19104 100644 (file)
@@ -1,3 +1,11 @@
+Thu Nov  1 19:11:35 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkrbtree.c (gtk_rbtree_reorder_fixup): Fix reorder_fixup,
+       #59583
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): fix
+       warning.
+
 Thu Nov  1 16:54:00 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtktypeutils.h: Make GtkFunction return boolean, not gint.
index c07d6b452722f994a08c3d954cf089034b4e0cbc..82768e7cfaa8db515bc00a774ad8fb997f37a654 100644 (file)
@@ -805,6 +805,7 @@ typedef struct _GtkRBReorder
   gint flags;
   gint order;
   gint invert_order;
+  gint parity;
 } GtkRBReorder;
 
 static int
@@ -828,19 +829,26 @@ gtk_rbtree_reorder_fixup (GtkRBTree *tree,
   if (node == tree->nil)
     return;
 
+  node->parity = 1;
+
   if (node->left != tree->nil)
     {
       gtk_rbtree_reorder_fixup (tree, node->left);
       node->offset += node->left->offset;
+      node->parity += node->left->parity;
     }
   if (node->right != tree->nil)
     {
       gtk_rbtree_reorder_fixup (tree, node->right);
       node->offset += node->right->offset;
+      node->parity += node->right->parity;
     }
       
   if (node->children)
-    node->offset += node->children->root->offset;
+    {
+      node->offset += node->children->root->offset;
+      node->parity += node->children->root->parity;
+    }
 }
 
 /* It basically pulls everything out of the tree, rearranges it, and puts it
@@ -849,7 +857,6 @@ gtk_rbtree_reorder_fixup (GtkRBTree *tree,
  * heights.  There is probably a more elegant way to write this function.  If
  * anyone wants to spend the time writing it, patches will be accepted.
  */
-
 void
 _gtk_rbtree_reorder (GtkRBTree *tree,
                     gint      *new_order,
index 01ec82dac3079245dfb2bbbca334ad8662bed1ce..a1f0b2be4d576befc8cb78b58501c2f683a58dcf 100644 (file)
@@ -230,7 +230,8 @@ gtk_tree_selection_set_mode (GtkTreeSelection *selection,
                                                  tree,
                                                  anchor_path,
                                                  0);
-      gtk_tree_path_free (anchor_path);
+      if (anchor_path)
+       gtk_tree_path_free (anchor_path);
     }
 
   selection->type = type;
index 2bdff6e04942649dbaa83593a9cf5d753531dead..a19cb42900293392c4e57cdd5d3aa3bcf938e9b3 100644 (file)
@@ -7987,20 +7987,32 @@ gtk_tree_view_set_reorderable (GtkTreeView *tree_view,
 {
   g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
 
-  if (tree_view->priv->reorderable == (reorderable?TRUE:FALSE))
+  reorderable = reorderable != FALSE;
+
+  if (tree_view->priv->reorderable == reorderable)
     return;
 
-  gtk_tree_view_set_rows_drag_source (tree_view,
-                                      GDK_BUTTON1_MASK,
-                                      row_targets,
-                                      G_N_ELEMENTS (row_targets),
-                                      GDK_ACTION_MOVE,
-                                      NULL, NULL);
-  gtk_tree_view_set_rows_drag_dest (tree_view,
-                                    row_targets,
-                                    G_N_ELEMENTS (row_targets),
-                                    GDK_ACTION_MOVE,
-                                    NULL, NULL);
+  tree_view->priv->reorderable = reorderable;
+
+  if (reorderable)
+    {
+      gtk_tree_view_set_rows_drag_source (tree_view,
+                                         GDK_BUTTON1_MASK,
+                                         row_targets,
+                                         G_N_ELEMENTS (row_targets),
+                                         GDK_ACTION_MOVE,
+                                         NULL, NULL);
+      gtk_tree_view_set_rows_drag_dest (tree_view,
+                                       row_targets,
+                                       G_N_ELEMENTS (row_targets),
+                                       GDK_ACTION_MOVE,
+                                       NULL, NULL);
+    }
+  else
+    {
+      gtk_tree_view_unset_rows_drag_source (tree_view);
+      gtk_tree_view_unset_rows_drag_dest (tree_view);
+    }
 
   g_object_notify (G_OBJECT (tree_view), "reorderable");
 }